package ec.edu.ups.rhc.controlador;

import java.util.List;
import java.util.logging.Logger;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import org.primefaces.event.RowEditEvent;

import ec.edu.ups.rhc.datos.HabitacionDAO;
import ec.edu.ups.rhc.modelo.Habitacion;


@ManagedBean
@ViewScoped
public class HabitacionBean {

	@Inject	private Logger log;
	@Inject	private HabitacionDAO daoHabitacion;
	@Inject FacesContext context;
	
	private Habitacion habitacion;
	private List<Habitacion> listaHabitacion;
	private List<Habitacion> listaHabitacionDisponibles;
	
	
	/**
	 * Método que se ejecuta posterior a la creación(instancia) del JavaBean 
	 */
	@PostConstruct
	public void init()
	{
		habitacion=new Habitacion();
		listaHabitacion=daoHabitacion.listar();
		listaHabitacionDisponibles=daoHabitacion.listarDisponibles();
	}


	/**
	 * Encapsulacion
	 */
	public Habitacion getHabitacion() {	return habitacion;	}
	public void setHabitacion(Habitacion hotel) {		this.habitacion = hotel;	}

	public List<Habitacion> getListaHabitacion() {	return listaHabitacion;	}
	public void setListaHabitacion(List<Habitacion> listaHabitacion) {	this.listaHabitacion = listaHabitacion;	}
	
	public List<Habitacion> getListaHabitacionDisponibles() {	return listaHabitacionDisponibles;	}
	public void setListaHabitacionDisponibles(	List<Habitacion> listaHabitacionDisponibles) {this.listaHabitacionDisponibles = listaHabitacionDisponibles;	}

	


	/**
	 * Action controllers
	 */
	public String guardar()
	{
		daoHabitacion.insert(habitacion);
		context.addMessage(null, new FacesMessage("Guardado exitoso", "Guardado exitoso") );
		return null;
	}	
	
	public String actualizar()
	{
		daoHabitacion.actualizar(habitacion);
		context.addMessage(null, new FacesMessage("Edicion exitosa", "Edicion exitosa") );
		return null;
	}
	public void editListener(RowEditEvent event) {
		habitacion = (Habitacion) event.getObject();
		this.actualizar();
	}
	public String eliminar(Habitacion hab)
	{
		this.habitacion=hab;
		habitacion.setEstado(-1);
		actualizar();
		this.listaHabitacion.remove(habitacion);
		return null;
	}
	
}
